Imports System.Data.SqlClient
Public Class cls_ensayotipo_

    Implements ICloneable

#Region "Variables ..."
    Private int_idensayotipo As Integer = 0
    Private str_nombre As String = ""
    Private str_nombreENG As String = ""
    Private str_sigla As String = ""
    Private str_siglaENG As String = ""
    Private str_idmodulo As String = ""
    Private int_idregistro As Integer = 0
    Private bit_nombreUSA As Boolean = False
    Private bit_nombreENGUSA As Boolean = False
    Private bit_siglaUSA As Boolean = False
    Private bit_siglaENGUSA As Boolean = False

    Private obj_ensayosubtipo_ As cls_ensayosubtipo_ = Nothing
    Private obj_registro As cls_registro_ = Nothing

    Private col_Items As Collections.Generic.List(Of cls_ensayotipo_) = Nothing

    Public Overrides Function ToString() As String
        Return nombre
    End Function
#End Region

#Region "Propiedades ..."
    ReadOnly Property This
        Get
            Return Me
        End Get
    End Property
    ReadOnly Property ThisDescripcion As String
        Get
            Return Me.ToString
        End Get
    End Property
    ReadOnly Property pKey
        Get
            Return idensayotipo
        End Get
    End Property
    Property idensayotipo() As Integer
        Get
            idensayotipo = int_idensayotipo
        End Get
        Set(ByVal value As Integer)
            int_idensayotipo = value
        End Set
    End Property
    Property nombre() As String
        Get
            nombre = str_nombre
        End Get
        Set(ByVal value As String)
            str_nombre = value
        End Set
    End Property
    Property nombreENG() As String
        Get
            nombreENG = str_nombreENG
        End Get
        Set(ByVal value As String)
            str_nombreENG = value
        End Set
    End Property
    Property sigla() As String
        Get
            sigla = str_sigla
        End Get
        Set(ByVal value As String)
            str_sigla = value
        End Set
    End Property
    Property siglaENG() As String
        Get
            siglaENG = str_siglaENG
        End Get
        Set(ByVal value As String)
            str_siglaENG = value
        End Set
    End Property
    Property idmodulo() As String
        Get
            idmodulo = str_idmodulo
        End Get
        Set(ByVal value As String)
            str_idmodulo = value
        End Set
    End Property
    Property idregistro() As Integer
        Get
            idregistro = int_idregistro
        End Get
        Set(ByVal value As Integer)
            int_idregistro = value
        End Set
    End Property
    Property nombreUSA As Boolean
        Get
            nombreUSA = bit_nombreUSA
        End Get
        Set(ByVal value As Boolean)
            bit_nombreUSA = value
        End Set
    End Property
    Property nombreENGUSA As Boolean
        Get
            nombreENGUSA = bit_nombreENGUSA
        End Get
        Set(ByVal value As Boolean)
            bit_nombreENGUSA = value
        End Set
    End Property
    Property siglaUSA As Boolean
        Get
            siglaUSA = bit_siglaUSA
        End Get
        Set(ByVal value As Boolean)
            bit_siglaUSA = value
        End Set
    End Property
    Property siglaENGUSA As Boolean
        Get
            siglaENGUSA = bit_siglaENGUSA
        End Get
        Set(ByVal value As Boolean)
            bit_siglaENGUSA = value
        End Set
    End Property


    ''' <importar>
    ''' True
    ''' </importar>
    Property ensayosubtipo_() As cls_ensayosubtipo_
        Get
            If IsNothing(obj_ensayosubtipo_) Then
                obj_ensayosubtipo_ = New cls_ensayosubtipo_
                If Not obj_ensayosubtipo_.CargarXidensayotipo(idensayotipo) Then
                    obj_ensayosubtipo_ = Nothing
                End If
            End If
            ensayosubtipo_ = obj_ensayosubtipo_
        End Get
        Set(ByVal value As cls_ensayosubtipo_)
            obj_ensayosubtipo_ = value
        End Set
    End Property
    Property registro() As cls_registro_
        Get
            If IsNothing(obj_registro) Then
                obj_registro = New cls_registro_
                If Not obj_registro.Buscar(idregistro) Then
                    obj_registro = Nothing
                End If
            End If
            registro = obj_registro
        End Get
        Set(ByVal value As cls_registro_)
            obj_registro = value
        End Set
    End Property

    Property Items() As Collections.Generic.List(Of cls_ensayotipo_)
        Get
            Items = col_Items
        End Get
        Set(ByVal value As Collections.Generic.List(Of cls_ensayotipo_))
            col_Items = value
        End Set
    End Property
#End Region

    Private Sub CargarColeccion(ByVal obj_Reader As SqlDataReader)
        col_Items = New Collections.Generic.List(Of cls_ensayotipo_)
        While obj_Reader.Read()
            Dim Elemento As New cls_ensayotipo_
            Elemento.int_idensayotipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idensayotipo")))

            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombre"))) = False Then
                Elemento.str_nombre = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombre")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENG"))) = False Then
                Elemento.str_nombreENG = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENG")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("sigla"))) = False Then
                Elemento.str_sigla = (obj_Reader.GetValue(obj_Reader.GetOrdinal("sigla")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENG"))) = False Then
                Elemento.str_siglaENG = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENG")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmodulo"))) = False Then
                Elemento.str_idmodulo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmodulo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro"))) = False Then
                Elemento.int_idregistro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreUSA"))) = False Then
                Elemento.bit_nombreUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreUSA")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENGUSA"))) = False Then
                Elemento.bit_nombreENGUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENGUSA")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaUSA"))) = False Then
                Elemento.bit_siglaUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaUSA")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENGUSA"))) = False Then
                Elemento.bit_siglaENGUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENGUSA")))
            End If
            col_Items.Add(Elemento)
        End While
    End Sub

    Private Sub CargarVariables(ByVal obj_Reader As SqlDataReader)
        obj_Reader.Read()
        int_idensayotipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idensayotipo")))

        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombre"))) = False Then
            str_nombre = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombre")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENG"))) = False Then
            str_nombreENG = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENG")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("sigla"))) = False Then
            str_sigla = (obj_Reader.GetValue(obj_Reader.GetOrdinal("sigla")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENG"))) = False Then
            str_siglaENG = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENG")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idmodulo"))) = False Then
            str_idmodulo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idmodulo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro"))) = False Then
            int_idregistro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreUSA"))) = False Then
            bit_nombreUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreUSA")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENGUSA"))) = False Then
            bit_nombreENGUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("nombreENGUSA")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaUSA"))) = False Then
            bit_siglaUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaUSA")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENGUSA"))) = False Then
            bit_siglaENGUSA = (obj_Reader.GetValue(obj_Reader.GetOrdinal("siglaENGUSA")))
        End If
    End Sub

    Public Sub Nuevo(Optional ByVal ObtenerID As Boolean = False)
        Dim obj_Conexion As New cls_Conexion
        Try
            'Creacion de registro----------------------------------------------------
            If IsNothing(obj_registro) Then
                registro = New cls_registro_
                registro.fechacreado = Now
                registro.idusuariocreado = UsuarioLOG.idusuario
                registro.fechamodificado = Now
                registro.idusuariomodificado = UsuarioLOG.idusuario
                registro.idregistroestado = 1
                registro.idusuarioregistroestado = UsuarioLOG.idusuario
                registro.Nuevo(True)
                idregistro = obj_registro.idregistro
            End If
            '------------------------------------------------------------------------
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__Nuevo"
                .Parameters.Add("@nombre", SqlDbType.NVarChar).Value = str_nombre
                .Parameters.Add("@nombreENG", SqlDbType.NVarChar).Value = str_nombreENG
                .Parameters.Add("@sigla", SqlDbType.NVarChar).Value = str_sigla
                .Parameters.Add("@siglaENG", SqlDbType.NVarChar).Value = str_siglaENG
                .Parameters.Add("@idmodulo", SqlDbType.NVarChar).Value = str_idmodulo
                .Parameters.Add("@idregistro", SqlDbType.Int).Value = int_idregistro
                .Parameters.Add("@nombreUSA", SqlDbType.Bit).Value = bit_nombreUSA
                .Parameters.Add("@nombreENGUSA", SqlDbType.Bit).Value = bit_nombreENGUSA
                .Parameters.Add("@siglaUSA", SqlDbType.Bit).Value = bit_siglaUSA
                .Parameters.Add("@siglaENGUSA", SqlDbType.Bit).Value = bit_siglaENGUSA
                .ExecuteNonQuery()
            End With
            CargarUltimo()

            'Creacion de ensayosubtipoes--------------------------------------------------
            Dim existePrimaria As Boolean = False
            If Not IsNothing(ensayosubtipo_) Then
                If Not IsNothing(ensayosubtipo_.Items) Then
                    For Each ensayosubtipo As cls_ensayosubtipo_ In ensayosubtipo_.Items
                        ensayosubtipo.idensayotipo = idensayotipo
                        ensayosubtipo.Nuevo(True)
                    Next
                End If
            End If
            '-------------------------------------------------------------------------

        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Crear el registro de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Modificar()
        Dim obj_Conexion As New cls_Conexion
        Try
            'Modificacion de registro------------------------------------------------
            registro.fechamodificado = Now : registro.idusuariomodificado = UsuarioLOG.idusuario
            registro.Modificar()
            '------------------------------------------------------------------------
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__Modificar"
                .Parameters.Add("@idensayotipo", SqlDbType.Int).Value = int_idensayotipo
                .Parameters.Add("@nombre", SqlDbType.NVarChar).Value = str_nombre
                .Parameters.Add("@nombreENG", SqlDbType.NVarChar).Value = str_nombreENG
                .Parameters.Add("@sigla", SqlDbType.NVarChar).Value = str_sigla
                .Parameters.Add("@siglaENG", SqlDbType.NVarChar).Value = str_siglaENG
                .Parameters.Add("@idmodulo", SqlDbType.NVarChar).Value = str_idmodulo
                .Parameters.Add("@idregistro", SqlDbType.Int).Value = int_idregistro
                .Parameters.Add("@nombreUSA", SqlDbType.Bit).Value = bit_nombreUSA
                .Parameters.Add("@nombreENGUSA", SqlDbType.Bit).Value = bit_nombreENGUSA
                .Parameters.Add("@siglaUSA", SqlDbType.Bit).Value = bit_siglaUSA
                .Parameters.Add("@siglaENGUSA", SqlDbType.Bit).Value = bit_siglaENGUSA
                .ExecuteNonQuery()
            End With

            'Creacion/modificacion de ensayosubtipo-------------------------------------
            If Not IsNothing(ensayosubtipo_) Then
                If Not IsNothing(ensayosubtipo_.Items) Then
                    For Each ensayosubtipo As cls_ensayosubtipo_ In ensayosubtipo_.Items
                        If ensayosubtipo.idensayosubtipo = 0 Then
                            ensayosubtipo.idensayotipo = idensayotipo
                            ensayosubtipo.Nuevo(True)
                        Else
                            ensayosubtipo.Modificar()
                        End If
                    Next
                End If
            End If
            '-------------------------------------------------------------------------

        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Modificar el registro de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Eliminar(ByVal idensayotipo As Integer)
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__Eliminar"
                .Parameters.Add("@idensayotipo", SqlDbType.Int).Value = idensayotipo
                .ExecuteNonQuery()
            End With
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Eliminar el registro de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Function Buscar(ByVal idensayotipo As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            Buscar = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__Buscar"
                .Parameters.Add("@idensayotipo", SqlDbType.Int).Value = idensayotipo
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                Buscar = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Buscar el registro de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Sub CargarUltimo()
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__CargarUltimo"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarUltimo registro de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Sub

    Public Function CargarTodos(Optional ByVal idregistroestado As Integer = 1) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarTodos = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "ensayotipo__CargarTodos"
                .Parameters.Add("@idregistroestado", SqlDbType.Int).Value = idregistroestado
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarTodos = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarTodos los registros de ensayotipo_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function Clone() As Object Implements System.ICloneable.Clone
        Dim obj_ensayotipo_Clon As New cls_ensayotipo_
        obj_ensayotipo_Clon.int_idensayotipo = Me.int_idensayotipo
        obj_ensayotipo_Clon.str_nombre = Me.str_nombre
        obj_ensayotipo_Clon.str_nombreENG = Me.str_nombreENG
        obj_ensayotipo_Clon.str_sigla = Me.str_sigla
        obj_ensayotipo_Clon.str_siglaENG = Me.str_siglaENG
        obj_ensayotipo_Clon.str_idmodulo = Me.str_idmodulo
        obj_ensayotipo_Clon.int_idregistro = Me.int_idregistro
        obj_ensayotipo_Clon.col_Items = Me.col_Items
        Return obj_ensayotipo_Clon
    End Function

End Class
